
;; Copyright (C) Johan Ceuppens 2009 
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 2 of the License, or
;; (at your option) any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
(load "magnitude.el")

(defun Character (name)
  (let* ((*class "Character")
	 (*instance-name name)
	 (*value nil)
	 (*super (Magnitude name))
	 
	 (*dispatch
	  (lambda (msg)
	    (cond ((eq msg "value")
		   (lambda () *value))
		  ((or (eq msg "name")(eq msg "instance-name"))
		   (lambda () *instance-name))
		  ((eq msg "integer:")
		   (lambda (aInteger) 
		     (setq *value aInteger)))
		  ((eq msg "digitValue:")
		   (lambda (aInteger) 
		     (setq *value aInteger)))
		  ((eq msg "asciiValue")
		   (lambda () 
		     (concat *value)));;FIXME
		  ((eq msg "digitValue")
		   (lambda ()
		     (string-to-char (string *value))))
		  (t
		   ((*super msg)))
		  )))
	 )
	 
    *dispatch))
